Millions of people worldwide bank, shop, purchase goods and services, perform research, etc. using the World Wide Web. With each transaction, private information, including names, addresses, phone numbers, credit card and debit card numbers, and passwords, are routinely transferred and stored in a variety of locations. Billions of dollars and millions of personal identities and pieces of private information are vulnerable to hackers who find their way through security vulnerabilities in web applications.
One approach to identifying security vulnerabilities in a web application is to examine the code for the web application to identify risk-prone operations within the code. However, this might not provide a complete picture of vulnerabilities, as the execution structure of the code might not be apparent from reviewing the code and the interplay of the examined code and other parts of a web application might introduce other vulnerabilities. Additionally, while examined code might be secure, it is possible for an unauthorized client device to modify client-side code to do something other than what was intended by the web application. Therefore, web application testing should also involve testing the limits of what unauthorized client-side code could perform.
Difficulties with properly executing security scans of web applications from the client-side include being able to correctly determine the possible paths of interaction between a user and a client and the web application. Often, this is made difficult because the client is provided with code to execute that has varied points of entry to the web application that is not in a readily understood format. For example, if the client-side code comprises a webpage formatted with simple HyperText Markup Language (HTML), a reader or a computer program can easily determine all of the entry points of that code, such as the form fields and embedded URLs.
Therefore, what is needed is a system and method to detect security vulnerabilities in server-based web applications using client-side applications that are simple to implement and cost effective.